package ctrlledprint

import (
	"fmt"
	"os"
	"strings"
)

// debugMode 是一个全局变量，用来控制是否打印调试信息
var debugMode = false

// setDebugMode 函数用来设置调试模式
func setDebugMode(debug bool) {
	debugMode = debug
}

// Printf 是一个包装了 fmt.Printf 的函数，它根据 debugMode 的值来决定是否打印
func Printf(format string, args ...interface{}) {
	if debugMode {
		fmt.Printf(format, args...)
	}
}

// Print 是一个包装了 fmt.Print 的函数，它根据 debugMode 的值来决定是否打印
func Print(args ...interface{}) {
	if debugMode {
		fmt.Print(args...)
	}
}

// Println 是一个包装了 fmt.Println 的函数，它根据 debugMode 的值来决定是否打印
func Println(args ...interface{}) {
	if debugMode {
		fmt.Println(args...)
	}
}

// Init 根据需要从环境变量、命令行参数或者其他配置源动态设置 debugMode 的值
func Init() {
	var enable bool

	status := os.Getenv("DEBUG")
	if len(status) > 0 {
		status = strings.ToLower(strings.TrimSpace(status))
		switch status {
		case "true", "1", "yes", "on":
			enable = true
		case "false", "0", "no", "off":
			enable = false
		default:
			enable = false
		}
	} else {
		enable = false
	}

	setDebugMode(enable)
}
